Skip to main content

03 HTTP overview

Internet world

互联网的正式名称是 Internet,实际上访问的只是互联网的一个子集万维网(World Wide Web),它基于 HTTP 协议,传输 HTML 等超文本资源,能力被限制在 HTTP 协议之内。

除了万维网,还有电子邮件、BT 和 Magnet 点对点下载、FTP 文件下载、SSH 安全登录、各种即时通信服务等,它们需要用各自的专有协议来访问。

Web Browser

检索、查看互联网上网页资源的应用程序,Web指的是 World Wide Web,也就是万维网。

浏览器本质上是一个 HTTP 协议中的请求方,使用 HTTP 协议获取网络上的各种资源。HTML 排版引擎用来展示页面,JavaScript 引擎用来实现动态化效果,开发者工具用来调试网页,以及五花八门的各种插件和扩展。

在 HTTP 协议里,浏览器的角色被称为 User Agent,意思是作为访问者的代理来发起 HTTP 请求。

Web Server

在协议另一端的应答方(响应方)是服务器 Web Server。

Web 服务器是 HTTP 协议里响应请求的主体。

  • 硬件是物理形式或云形式的机器;
  • 软件是提供 Web 服务的应用程序,通常会运行在硬件服务器上。

服务器软件:

  • Apache:功能相当完善,资料很多,学习门槛低;
  • Nginx: 高性能、高稳定,易于扩展;
  • Windows 上的 IIS;
  • Java 的 Jetty/Tomcat ;

CDN

CDN,Content Delivery Network 内容分发网络,它应用了 HTTP 协议里的缓存和代理技术,代替源站响应客户端的请求。

提供的功能:

  • 网络加速:可以缓存源站的数据,让浏览器的请求不用到达源站服务器,直接在半路就可以获取响应。如果 CDN 的调度算法很优秀,更可以找到离用户最近的节点,大幅度缩短响应时间。
  • 负载均衡
  • 安全防护
  • 边缘计算
  • 跨运营商网络

爬虫

可以自动访问 Web 资源的应用程序。

robots.txt 约定可以爬取的信息范围。

HTML

是 HTTP 协议传输的主要内容之一,它描述了超文本页面,用各种“标签”定义文字、图片等资源和排版布局,最终由浏览器“渲染”出可视化页面。

Web Service

是一个基于 Web(HTTP)的服务架构技术,由 W3C 定义的应用服务开发规范,使用 client-server 主从架构,通常使用 WSDL 定义服务接口,使用 HTTP 协议传输 XML 或 SOAP 消息。

WAF

网络应用防火墙,检测 HTTP 流量,防护 Web 应用的安全技术。通常位于 Web 服务器之前,可以阻止 SQL 注入、跨站脚本等攻击等。

TCP/IP

TCP/IP 协议是一系列网络通信协议的统称,最核心的两个协议是 TCP 和 IP,其他的还有 UDP、ICMP、ARP 等等,共同构成了一个复杂但有层次的协议栈。

IP 协议 Internet Protocol,主要解决寻址和路由问题,以及如何在两点间传送数据包。

TCP 协议 Transmission Control Protocol,位于 IP 协议之上,基于 IP 协议提供可靠的、字节流形式的通信,是 HTTP 协议得以实现的基础。

DNS

域名系统 Domain Name System,用有意义的名字来作为 IP 地址的等价替代。

URI/URL

URI(Uniform Resource Identifier)统一资源标识符,使用它唯一地标记互联网上资源。

URL(Uniform Resource Locator)统一资源定位符,俗称网址,是 URI 的一个子集。

http://nginx.org/en/download.html

协议名:访问该资源应当使用的协议,http

主机名:即互联网上主机的标记,可以是域名或 IP 地址,nginx.org

路径:即资源在主机上的位置,使用“/”分隔多级目录,/en/download.html

HTTPS

SSL/TLS 负责加密通信的安全协议,建立在 TCP/IP 之上,被用作 HTTP 的下层。

代理

代理(Proxy)是 HTTP 协议中请求方和应答方中间的一个环节,既可以转发客户端的请求,也可以转发服务器的应答。

  1. 匿名代理:完全隐匿了被代理的机器,外界看到的只是代理服务器;
  2. 透明代理:在传输过程中是透明开放的,外界既知道代理,也知道客户端;
  3. 正向代理:靠近客户端,代表客户端向服务器发送请求;
  4. 反向代理:靠近服务器端,代表服务器响应客户端的请求;

通过代理实现的功能:

  1. 负载均衡:把访问请求均匀分散到多台机器,实现访问集群化;
  2. 内容缓存:暂存上下行的数据,减轻后端的压力;
  3. 安全防护:隐匿 IP, 使用 WAF 等工具抵御网络攻击,保护被代理的机器;
  4. 数据处理:提供压缩、加密等额外的功能。